/**
 * Copyright (c) 2024,  科泰集团教研团队
 * 版权所有，请勿侵权
 * @author  科泰集团教研团队
 * @createTime 2024/4/15 16:47
 * @lastModify 2024/4/15 16:47
 * @version 1.0.0
 */
var __datatable_lang = {
    "sProcessing": "处理中...",
    "sLengthMenu": "每页 _MENU_ 条",
    "sZeroRecords": "没有匹配结果",
    "sInfo": "当前显示第 _START_ 至 _END_ 条，共 _TOTAL_ 条。",
    "sInfoEmpty": "当前显示第 0 至 0 条，共 0 条",
    "sInfoFiltered": "",
    "sInfoPostFix": "",
    "sSearch": "搜索:",
    "sUrl": "",
    "sEmptyTable": "暂无数据",
    "sLoadingRecords": "载入中...",
    "sInfoThousands": ",",
    "oPaginate": {
        "sFirst": "首页",
        "sPrevious": "上页",
        "sNext": "下页",
        "sLast": "末页",
        "sJump": "跳转"
    },
    "oAria": {
        "sSortAscending": ": 以升序排列此列",
        "sSortDescending": ": 以降序排列此列"
    }
};

/**
 * 将数据表绑定到
 * @param form 绑定的查询表单（传递jQuery对象或选择器）
 * @param columns 返回数据对应的列渲染格式
 * @param callbackFunc
 * @returns 返回数据表所需的配置
 */
function bindDatatableOptions($form, columns, callbackFunc){
    // 封装表单为jQuery对象
    $form = $($form);
    // 产生默认的Option配置
    var options = {
        language: __datatable_lang,  //提示信息语言
        autoWidth: false,  //禁用自动调整列宽
        processing: true,  //隐藏加载提示,自行处理
        serverSide: true,  //启用服务器端分页
        lengthChange: false,
        stripeClasses: ["odd", "even"],  //为奇偶行加上样式，兼容不支持CSS伪类的场合
        searching: false,  //禁用原生搜索
        orderMulti: false,  //启用多列排序
        ordering: false, // 禁用排序
        renderer: "bootstrap",  //渲染样式：Bootstrap和jquery-ui
        pagingType: "simple_numbers",  //分页样式：simple,simple_numbers,full,full_numbers
        columnDefs: [{
            "targets": 'nosort',  //列的样式名
            "orderable": false    //包含上样式名‘nosort’的禁止排序
        }],
        ajax: function (data, callback, settings) {
            // 产生查询参数
            var param = {};
            param.pageSize = data.length;//页面显示记录条数，在页面显示每页显示多少项的时候
            param.pageNo = (data.start / data.length) + 1;//当前页码
            // 这里添加其他搜索条件
            var formData = $form.serializeArray();
            $(formData).each(function () {
                param[this.name] = this.value;
            })
            //ajax请求数据
            $.ajax({
                type: "GET",
                url: $form.attr("action"), // 读取表单的action作为请求url
                cache: false,  //禁用缓存
                data: param,  //传入组装的参数
                dataType: "json",
                success: function (result) {

                    var isRender = typeof callbackFunc != "function" || callbackFunc(result) !== false;
                    // 判断是否渲染（callbackFunc返回false，则不渲染）
                    if(isRender){
                        //封装返回数据
                        var returnData = {};
                        var data = result.data;
                        returnData.draw = data.draw;//这里直接自行返回了draw计数器,应该由后台返回
                        returnData.recordsTotal = data.totalCount;//返回数据全部记录
                        returnData.recordsFiltered = data.totalCount;//后台不实现过滤功能，每次查询均视作全部结果
                        returnData.data = data.data;//返回的数据列表
                        //console.log(returnData);
                        //调用DataTables提供的callback方法，代表数据已封装完成并传回DataTables进行渲染
                        //此时的数据需确保正确无误，异常判断应在执行此回调前自行处理完毕
                        callback(returnData);
                    }

                }
            });
        },
        //列表表头字段
        columns: columns
    }
    // 返回生成的选项
    return options;
}